package com.itheima.interface5;

public class Test {
    public static void main(String[] args) {
        //目标:理解接口的几点注意事项

        Dog d = new Dog();
        d.show();
    }
}

//4.一个类实现了多个接口,如果多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可
interface A3{
    default void show(){
        System.out.println("接口中的A3 show()");
    }
}

interface B3{
    default void show(){
        System.out.println("接口中的B3 show()");
    }
}

class C3 implements A3,B3{
    @Override
    public void show() {
        //解决方法:
        A3.super.show();        //找A3干爹
        B3.super.show();
    }
}



//3.一个类继承了父类,又同时实现了接口,如果父类中和接口中有同名的默认方法,实现类会优先用父类的
interface A2{
    default void show(){
        System.out.println("接口中的A2 show()");
    }
}

class Animal{
    public void show(){
        System.out.println("父类中的show方法");
    }
}

class Dog extends Animal implements A2{
}

//2.一个接口继承多个接口,如果多个接口中存在方法签名冲突(如一个有返回值一个没有),则此时不支持继承,也不支持多实现
interface A1{
    void show1();
}

interface B1{
    void show();
}

interface C1 extends A1,B1{
    void show3();
}


//1.接口与接口可以多继承:一个接口可以同时继承多个接口
//  类与类:单继承一个类只能继承一个直接父类
//  类与接口:多实现,一个类可以同时实现多个接口
//  接口与接口:多继承,一个接口可以同时继承多个接口
interface A{
    void show1();
}
interface B{
    void show2();
}
interface C extends A,B{
    void show3();
}

class D implements C{
    @Override
    public void show3() {

    }

    @Override
    public void show1() {

    }

    @Override
    public void show2() {

    }
}


